package org.wtframework.website.server.service;


import java.util.Date;
import java.util.List;
import java.util.Map;

import org.openredhead.springx.core.server.page.IPage;
import org.openredhead.springx.core.web.mvc.ajaxrpc.BasicAjaxRpcRemoteService;
import org.openredhead.springx.core.web.mvc.annotation.AjaxRpcMethod;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.wtframework.platform.server.util.StringOperationUtils;
import org.wtframework.website.server.manager.WebTrendsManager;
import org.wtframework.website.server.model.impl.WebTrends;

/**
 * 
 * <B>版权所有：</B> 佛山市网特计算机软件有限公司 <br/><br/>
 * <B>类描述：</B> （首页动态service） <br/><br/>
 * <B>作者：</B> 何展操 <br/><br/>
 * <B>创建日期：</B> 2014年7月18日 上午10:25:12 
 *
 */
@Service
public class WebTrendService extends BasicAjaxRpcRemoteService {
	
	@Autowired
	private WebTrendsManager webTrendsManager;
	
	/**
	 * 
	 * <B>方法描述：</B>（返回动态列表，用于后台和首页更多） <br/>
	 *
	 * <B>作者：	 </B> 何展操 <br/>
	 * <B>创建日期：</B> 2014年7月22日 下午5:14:14 
	 * @param pageNo
	 * @param pageSize
	 * @return
	 */
	public IPage<WebTrends> findBackWebTrendsList(Integer pageNo, Integer pageSize){
		String hql="from WebTrends order by newTime desc";
		return webTrendsManager.findByQuery(hql).getPageByPageNo(pageNo, pageSize);
	}
	
	public WebTrends findWebTrendsById(Integer id){
		return webTrendsManager.load(id);
	}
	
	@AjaxRpcMethod
	public void addWebTrends(WebTrends webTrends){
		webTrends.setNewTime(new Date());
		String content = webTrends.getContent();
		String url = "/files/nzsz/ueditor/";
		List<String> resultList = StringOperationUtils.findAllStr(content, url);
		String imgs="";
		//只更新第一张图片
		if(resultList.size()!=0){
			imgs=resultList.get(0);
		}
		webTrends.setImgsUrl(imgs);
		webTrends.setContent(StringOperationUtils.ueditorFilterByAdd(content, "nzsz/ueditor"));
		webTrendsManager.save(webTrends);
	}
	
	@AjaxRpcMethod
	public void updateWebTrends(WebTrends webTrends){
		WebTrends webt=webTrendsManager.load(webTrends.getId());
		webt.setNewTime(new Date());
		webt.setTitle(webTrends.getTitle());
		//获取旧的url,更新imgUrl
		String oldContent = webt.getContent();
		String newContent = webTrends.getContent();
		newContent = StringOperationUtils.ueditorFilterByUpdate(oldContent, newContent, "nzsz/ueditor");
		webt.setContent(newContent);
		String url = "/files/nzsz/ueditor/";
		List<String> resultList = StringOperationUtils.findAllStr(newContent, url);
		String imgs="";
		//只更新第一张图片
		if(resultList.size()!=0){
			imgs=resultList.get(0);
		}
		webt.setImgsUrl(imgs);
		webt.setPublisher(webTrends.getPublisher());
		webTrendsManager.save(webt);
	}
	
	@AjaxRpcMethod
	public void delWebTrendsList(List<Integer> idList){
		for(Integer id : idList){
			WebTrends webTrends = webTrendsManager.load(id);
			if(webTrends != null){
				String content = webTrends.getContent();
				StringOperationUtils.ueditorFilesDelete(content, "nzsz/ueditor");
				webTrendsManager.delete(webTrends);
			}
			
		}
	}
	
	public IPage<WebTrends> findWebTrendsByTitle(Integer pageNo, Integer pageSize, String title){
		String hql="from WebTrends where title like ? order by newTime desc";
		return webTrendsManager.findByQuery(hql, new Object[]{"%"+title+"%"}).getPageByPageNo(pageNo, pageSize);
	}
	
	/**
	 * 
	 * <B>方法描述：</B>（前台首页所用） <br/>
	 *
	 * <B>作者：	 </B> 何展操 <br/>
	 * <B>创建日期：</B> 2014年7月21日 下午2:33:27 
	 * @param pageNo
	 * @param pageSize
	 * @param parameNames
	 * @param queryString
	 * @param values
	 * @return
	 */
	public IPage<Map<String, Object>> findPropertyList(Integer pageNo, Integer pageSize, String[] parameNames, String queryString, Object... values){
		return webTrendsManager.findProperty(parameNames, queryString, values).getPageByPageNo(pageNo, pageSize);
	}
	
	/**
	 * 
	 * <B>方法描述：</B>（阅读量+1） <br/>
	 *
	 * <B>作者：	 </B> 何展操 <br/>
	 * <B>创建日期：</B> 2014年8月8日 下午4:52:00
	 */
	public void increasePageViews(String hql){
		webTrendsManager.getQuery(hql).executeUpdate();
		
	}
}
